package cn.hdmis.dao;
import java.util.Date;
import java.util.List;

import cn.hdmis.entity.Guardian;
import cn.hdmis.entity.Student;
import cn.hdmis.entity.Grade;
import cn.hdmis.entity.Teacher;


/** 
* @ClassName: StudentDao 
* @Description: TODO 学生对象的数据库交互
* @author pnwzgx@163.com
* @date 2011-3-23 下午10:51:05 
*  
*/

public interface StudentDao extends BaseDao<Student> {

	/** 
	* @Title: removeStudent 
	* @Description: TODO学生退学（标识学生为离开状态）
	* @param @param student 
	* @return void 
	* @throws 
	*/
	public void removeStudent(Student student);
	/** 
	* @Title: findByGuardian 
	* @Description: TODO 根据监护人查询学生
	* @param @param guardian
	* @param @return 
	* @return Student 
	* @throws 
	*/
	public Student findByGuardian(Guardian guardian);
	/** 
	* @Title: findByTeacher 
	* @Description: TODO 查询某个老师教过的所有学生
	* @param @param teacher 
	* @param @return 
	* @return List<Student> 
	* @throws 
	*/
	public List<Student> findByTeacher(Teacher teacher);
	/** 
	* @Title: findByTeacher 
	* @Description: TODO 查询老师在某个时间段教过的学生
	* @param teacher
	* @param begin
	* @param end
	* @return List<Student> 
	* @throws 
	*/
	public List<Student> findByTeacher(Teacher teacher,Date begin,Date end);
	/** 
	* @Title: countStudent 
	* @Description: TODO 统计学校的总共人数
	* @param status 是否包含已经离开学生
	* @return int 
	* @throws 
	*/
	public int countStudent(Boolean status);
	
	/** 
	* @Title: countStudent 
	* @Description: TODO 统计指定班级人数
	* @param  clazz 班级
	* @return int 
	* @throws 
	*/
	public int countStudent(Grade clazz);
	
	/** 
	* @Title: countStudent 
	* @Description: TODO 根据学生年龄统计人数
	* @param age
	* @return int 
	* @throws 
	*/
	public int countStudent(Integer age);
	
	
}
